package com.hifar.sso.service;

import com.hifar.sso.model.SSOUser;

import java.util.List;

/**
 * SSO用户服务接口
 * 
 * @author system
 * @since 1.0.0
 */
public interface SSOUserService {
    
    /**
     * 用户认证
     * 
     * @param username 用户名
     * @param password 密码
     * @return 用户信息
     */
    SSOUser authenticate(String username, String password);
    
    /**
     * 根据用户ID获取用户信息
     * 
     * @param userId 用户ID
     * @return 用户信息
     */
    SSOUser getUserById(String userId);
    
    /**
     * 根据用户名获取用户信息
     * 
     * @param username 用户名
     * @return 用户信息
     */
    SSOUser getUserByUsername(String username);
    
    /**
     * 更新用户信息
     * 
     * @param user 用户信息
     * @return 是否成功
     */
    boolean updateUser(SSOUser user);
    
    /**
     * 获取用户权限
     * 
     * @param userId 用户ID
     * @return 权限列表
     */
    List<String> getUserPermissions(String userId);
    
    /**
     * 获取用户角色
     * 
     * @param userId 用户ID
     * @return 角色列表
     */
    List<String> getUserRoles(String userId);
    
    /**
     * 验证用户密码
     * 
     * @param username 用户名
     * @param password 密码
     * @return 是否验证通过
     */
    boolean validatePassword(String username, String password);
}
